package com.zb.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zb.entity.AccounLoginInfo;
import com.zb.entity.SelectVo;
import com.zb.entity.ZjNetworkEmpRelation;
import com.zb.exception.SMSException;
import com.zb.extend.NetworkEmpRelationExtend;
import com.zb.mobile.NetworkEmpMobileVo;
import com.zb.vo.NetworkEmpVo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 网点人员关联表 服务类
 * </p>
 *
 * @author WEN
 * @since 2023-10-18
 */
public interface ZjNetworkEmpRelationService extends IService<ZjNetworkEmpRelation> {

    /**
     * 保存服务商负责人
     * @param custAccId 商家ID
     * @param networkId 网点ID
     * @param networkEmpId 网点人员ID
     */
    void saveNetworkManager(Long custAccId, Long networkId, Long networkEmpId);

    /**
     * 根据服务人员ID & 网点ID 获取服务商负责人信息
     * @param networkEmpId 服务人员ID
     * @param networkIds 服务商ID
     * @return
     */
    List<ZjNetworkEmpRelation> getManagerByNetworkEmpIdAndNetworkIds(Long networkEmpId, List<Long> networkIds);

    /**
     * 根据服务人员ID & 网点ID 删除服务商负责人信息
     * @param networkEmpId 服务人员ID
     * @param networkIds 服务商ID
     */
    void deleteByNetworkEmpAndNetworkIds(Long networkEmpId, List<Long> networkIds);

    /**
     * 保存服务商人员关联表
     * @param custAccId 商家ID
     * @param networkEmpId 服务人员ID
     * @param networkEmpVo
     */
    void save(Long custAccId, Long networkEmpId, NetworkEmpVo networkEmpVo);

    /**
     * 根据服务人员ID获取关联的服务商ID
     * @param networkEmpIds 服务人员ID
     * @return
     */
    List<NetworkEmpRelationExtend> getnetworkIdByNetworkEmpIds(List<Long> networkEmpIds);

    /**
     * 根据服务商ID删除服务人员
     * @param networkIds 服务商ID
     */
    void deleteBatchByNetworkIds(List<Long> networkIds);

    /**
     * 根据服务人员ID & 服务商ID获取信息
     * @param networkEmpId 服务人员ID
     * @param networkId 服务商ID
     * @return
     */
    ZjNetworkEmpRelation getNetworkEmpIdAndNetworkId(Long networkEmpId, Long networkId);

    /**
     * 根据服务商人员ID获取服务商信息
     * @param networkEmpId 服务人员ID
     * @return
     */
    List<NetworkEmpRelationExtend> getByNetworkEmpId(Long networkEmpId);

    /**
     * 根据服务商ID获取服务商负责人信息
     * @param networkId 服务商ID
     * @return
     */
    NetworkEmpRelationExtend getManagerByNetworkId(Long networkId);

    /**
     * 根据服务商ID&服务人员ID获取服务人员信息
     * @param networkId 服务商ID
     * @param networkEmpId 服务人员ID
     */
    ZjNetworkEmpRelation getByNetworkIdAndNetworkEmpId(Long networkId, Long networkEmpId);

    /**
     * 加入服务商
     * @param loginInfo 登录信息
     * @param inviteCode 加入服务商的邀请码
     * @param empMobileVo 工程师字段
     */
    void joinNewtwork(AccounLoginInfo loginInfo, String inviteCode, NetworkEmpMobileVo empMobileVo) throws SMSException;

    /**
     * 获取服务商移动端人员列表
     * @param loginInfo 登录账号
     * @param selectVo 搜索条件
     * @return
     */
    Map<String, Object> getNetworkMobileEmpList(AccounLoginInfo loginInfo, SelectVo selectVo);

    /**
     * 根据商家ID&服务人员ID获取服务商负责人信息
     * @param custAccId 商家ID
     * @param networkEmpId 服务人员ID
     * @return
     */
    List<ZjNetworkEmpRelation> getManagerByCustAccIdAndNetworkEmpId(Long custAccId, Long networkEmpId);

    /**
     * 根据商家ID&服务人员ID获取所关联的服务商
     * @param custAccId 商家ID
     * @param networkEmpId 服务人员ID
     * @return
     */
    List<ZjNetworkEmpRelation> getByNetworkEmpId(Long custAccId, Long networkEmpId);

}
